Firebase Authenticationトークンをバックエンドのpythonで検証する
概要
Firebase Authenticationはフロントからの認証が成功すると、IDトークンを発行できるようになる。
フロントでそのIDトークンを受け取って、それを別のバックエンドサーバーに送ることで、そのサーバーでも認証が行えるようにしたい。
IDトークンはJWT形式となってる
目標
カスタムバックエンドにフロントからIDトークンを渡して、検証させて認証成功させる
IDトークンからUserIDまたはe-mailを取得する
IDトークンの有効期限も確認してみる
作業ログ
pythonでトークンの検証を行おうと思う。
方針
APIとかは作らない。Admin SDKを使って、検証がどう行われるのかを確認するだけ。
IDトークンは直接コードに与える形で検証する。
やっていこう
まずはpythonプロジェクトを簡単に立ち上げる。poetryでサクッと。
次にfirebase-admin-sdkをインストールする
$ poetry add firebase-admin
なんかgrpcioのインストールでエラーが出る....
どういうことだろう...
環境は以下
Mac M1
python3.10.9
poetry利用
インストールしようとしてるgrpcioのバージョンは1.51.0
ん〜〜〜、ちょっとMacの環境やと面倒臭そうですな....
Docker上でやっちゃいます。いけました。
firebase-adminをインストールして...
コンソールから秘密鍵をダウンロードして...
GOOGLE_APPLICATION_CREDENTIALSていう環境変数に秘密鍵(jsonファイル)のpathを入れて...
以下のような検証コードを書いて...
code: sample.py
from firebase_admin import auth
id_token = "......"
decoded_token = auth.verify_id_token(id_token)
終わり!!!
decoded_tokenに値が入ってたら、認証は成功している
もし検証に失敗した場合....
firebase_admin._auth_utils.InvalidIdTokenErrorが発生する
参考
hr.icon